<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // Promise是什么？ 表示的是获取异步任务的结果  （通俗：未来一件事的结果）
    // Promise有三种状态： 
    // 1.pending（表示这件事正在发生，还没有出结果）
    // 2.fulfilled （表示这件事已经有结果了，并且是个成功结果）
    // 3.rejected(表示这件事有结果了，但是这个结果是个失败的结果)

    // 怎么用？
    // Promise内部通常封装的是个异步任务。 当这个异步任务执行完成之后，promise的状态就确定了。
    // 当异步任务达成承诺之后 可以使用resolve来确定promise成功的状态
    // 当异步任务没达成承诺之后 可以使用reject来确定promise失败的状态
    // promise的状态 一旦确定之后，就不可在改变

    // 语法：
    // const p = new Promise((resolve, reject) => {
    //   setTimeout(() => {
    //     // 异步任务执行完之后 如果成功了 调用resolve
    //     // resolve('成功的结果')
    //     // 异步任务执行完之后 如果失败了 调用reject
    //     // reject(new Error('失败的结果'))
    //   }, 1000);
    // })
    // p.then((res)=>{
    //   console.log(res) //'成功的结果'
    // }).catch(err=>{
    //   console.log(err.message) //失败的结果
    // })



    // 承诺：期末考试考90分以上，带你去动物园
    const p = new Promise((resolve, reject) => {
      setTimeout(() => {
        const score = Math.ceil(Math.random() * 10 + 85)
        if (score > 90) {
          resolve(`不错，考了${score}分，可以去动物园了`)
        } else {
          reject(new Error('在家待着吧'))
        }
      }, 2000);
    })

    p.then(res => {
      console.log(res)
    }).catch(err => {
      console.dir(err.message)
    })
  </script>
</body>

</html>